# -*- coding: utf-8 -*- 
# 姓名：李万伦
# 时间：2023/1/13  15:41
# 文件名：pytest_runapicase.py
import os
import shutil
import time
import pytest
from Python软件测试.UI自动化.张恒豪UI自动化.common.bug_count import last_count,clear_count
from Python软件测试.UI自动化.张恒豪UI自动化.common.send_feishu_message import feishu_sendmessage
from Python软件测试.UI自动化.张恒豪UI自动化.email.send_email import AttachmentEmailSender
from Python软件测试.UI自动化.张恒豪UI自动化.email.zipfile_test import do_zip_compress
# def test_shutil():
#     # location
#     location = r"E:\11546\pythonProject\Python软件测试\UI自动化\张恒豪UI自动化"
#     # directory
#     dir = "results"
#     # path
#     if not os.path.exists(dir):
#         os.mkdir(dir)
#     path = os.path.join(location, dir)
#     # removing directory
#     shutil.rmtree(path)

if __name__ == "__main__":
    # #清除results下面的数据
    # test_shutil()
    # #清空bug中间记录表数据
    # clear_count()
    # #运行测试用例
    '''
    在根目录下单独创建文件执行
    ---运行所有：pytest.main(['-vs'])  加参数可以展示更加详细的执行内容
    ---指定模块运行：pytest.main(['-vs'], 'test_login_account_error.py')
    ---指定目录运行：pytest.main(['-vs'], './testcase')
    ---通过nodeid指定用例执行：nodeid由模块名，分隔符，类名，方法名，函数名组成。
    例如：
    pytest.main(['-vs','./testcase/test_login_account_error.py::方法名'])   
    pytest.main(['-vs','./testcase/test_login_account_error.py::类名::方法名'])
    -q: 安静模式, 不输出环境信息
    -v: 丰富信息模式, 输出更详细的用例执行信息
    -s: 显示程序中的print/logging输出
    -vs:通常两个参数一起用
    -n:支持多线程或者分布式运行测试用例
    '''
    # 执行 pytest，指定 allure 结果目录 "--alluredir","results"
    pytest.main(['-vs','./testcase/API',"--alluredir", "results"])
    time.sleep(2)
    list=last_count()
    text=">>环境：测试环境 \n" +">>类型：%s \n" % "测试报告" +\
         ">>测试结果：\n"+\
         "总计执行用例%s \n" %(list[0]+list[1])+\
         "用例通过数量：%s \n" %(list[0])+\
         "用例失败数量：%s \n" %(list[1])
    feishu_sendmessage(text)
    #清空先前测试结果,生成allure的html报告
    os.system('allure generate results -o html --clean')
    #将生成的报告文件夹html压缩邮件发送给对应的人
    emailSenderClient=AttachmentEmailSender()
    file_path = r'E:\11546\pythonProject\Python软件测试\UI自动化\张恒豪UI自动化\html'
    # 将生成的报告文件夹html压缩成zip文件
    do_zip_compress(file_path)
    lasteamil_path = r'E:\11546\pythonProject\Python软件测试\UI自动化\张恒豪UI自动化\html.zip'
    content = '测试报告如附件所示'
    tolist = ["1154605217@qq.com"]  # 收件人邮箱
    local = time.localtime()
    time1 = time.strftime("%Y-%m-%d %H:%M:%S", local)
    subject = '测试报告通知' + time1
    #邮件发送给对应的人
    emailSenderClient.sendeamil(tolist, subject, content, lasteamil_path)
    # 打开报告
    os.system(f"allure serve results")

    # 发送给别人打开的命令：allure open D:\tool\html